9536. Сумма матриц

 

Заданы две матрицы A и B. Найдите их сумму C = A + B.

 

Вход. Первая строка содержит размеры матриц – два целых числа n и m (1 ≤ n, m ≤ 100).  Далее идут n строк по m целых чисел, задающих матрицу A. Затем следует пустая строка, после которой в том же формате приводится матрица B.

 

Выход. Выведите матрицу С: n строк по m целых чисел.

 

Пример входа

Пример выхода

3 4

3 4 5 6

1 2 3 4

7 6 5 4

 

0 0 -3 -2

-1 3 4 5

5 6 1 2

3 4 2 4

0 5 7 9

12 12 6 6

 

 

РЕШЕНИЕ

алгебра

 

Анализ алгоритма

По заданным матрицам А и В находим их сумму – матрицу С, где

Сij = Aij + Bij

 

Реализация алгоритма

Объявим матрицы a, b и c.

 

#define MAX 101

int a[MAX][MAX], b[MAX][MAX], c[MAX][MAX];

 

Читаем входные данные – матрицы А и В.

 

scanf("%d %d", &n, &m);

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

  scanf("%d", &a[i][j]);

 

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

  scanf("%d", &b[i][j]);

 

Вычисляем сумму матриц C = A + B.

 

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

  c[i][j] = a[i][j] + b[i][j];

 

Выводим результирующую матрицу.

 

for (i = 0; i < n; i++)

{

  for (j = 0; j < m; j++)

    printf("%d ", c[i][j]);

  printf("\n");

}

 

Реализация алгоритмадвойной указатель

Объявим матрицы a, b и c как двойные указатели.

 

int **a, **b, **c;

 

Функция Read читает матрицу matr.

 

void Read(int **&matr, int n, int m)

{

  matr = new int* [n];

  for (i = 0; i < n; i++)

  {

    matr[i] = new int[m];

    for (j = 0; j < m; j++)

      scanf("%d", &matr[i][j]);

  }

}

 

Функция Sum вычисляет сумму матриц A + B и сохраняет ее в матрице C.

 

void Sum(int **a, int **b, int **&c, int n, int m)

{

  c = new int* [n];

  for (i = 0; i < n; i++)

  {

    c[i] = new int[m];

    for (j = 0; j < m; j++)

       c[i][j] = a[i][j] + b[i][j];

  }

}

 

Функция Print выводит матрицу A.

 

void Print(int **a)

{

  for (i = 0; i < n; i++)

  {

    for (j = 0; j < m; j++)

      printf("%d ", a[i][j]);

    printf("\n");

  }

}

 

Основная часть программы. Читаем размеры матриц n и m.

 

scanf("%d %d", &n, &m);

 

Читаем матрицы a и b.

 

Read(a, n, m);

Read(b, n, m);

 

Вычисляем сумму матриц C = A + B.

 

Sum(a, b, c, n, m);

 

Выводим результирующую матрицу.

 

Print(c);